﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Model;
using System.Data;
using System.Data.SqlClient;

namespace Controller
{
    public class RGMTypeController : Controller.dbConnection.ConnectionClass
    {
        public string Save(RGMType RGMTypes)
        {
            SqlCommand command = new SqlCommand();
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "up_InsertUpdateRGMType";
            command.Parameters.Add("@ID", SqlDbType.VarChar).Value = RGMTypes.ID;
            command.Parameters.Add("@DESCRIPTION", SqlDbType.VarChar).Value = RGMTypes.Description;
            command.Parameters.Add("@ISNATIONWIDE", SqlDbType.VarChar).Value = RGMTypes.isNationWide;
            command.Parameters.Add("@ISACTIVE", SqlDbType.VarChar).Value = RGMTypes.isActive;
            command.Parameters.Add("@LASTMODIFIEDBY", SqlDbType.VarChar).Value = RGMTypes.LastModifiedBy;
            command.Parameters.Add("@CREATEBY", SqlDbType.VarChar).Value = RGMTypes.CreateBy;
            command.Parameters.Add("@BusinessGroupID", SqlDbType.VarChar).Value = RGMTypes.BusinessGroupID;

            return ExecuteNonQuery(command);
        }

        public string Delete(RGMType RGMTypes)
        {
            SqlCommand command = new SqlCommand();
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "up_DeleteRGMType";
            command.Parameters.Add("@ID", SqlDbType.VarChar).Value = RGMTypes.ID;
            command.Parameters.Add("@LASTMODIFIEDBY", SqlDbType.VarChar).Value = RGMTypes.LastModifiedBy;

            return ExecuteNonQuery(command);
        }

        public string BeforeDelete(RGMType RGMTypes)
        {
            SqlCommand command = new SqlCommand();
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "SP_CheckBeforeDetleteRGMType";
            command.Parameters.Add("@ID", SqlDbType.Int).Value = RGMTypes.ID;
            

            return GetSingleData(command);
        }


        public string TotalGrid(string sSearch, int BusinessGroupID)
        {

            SqlCommand command = new SqlCommand();
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "GridPageCount_RgmType";
            command.Parameters.Add("@SEARCH", SqlDbType.VarChar).Value = sSearch;
            command.Parameters.Add("@BusinessGroupID", SqlDbType.VarChar).Value = BusinessGroupID;

            return GetSingleData(command);
        }

        public IList<RGMType> GetAll(string sSearch, int PageNumber, int Datalength, string SortCol, string SortDirection, out int TotalData,int BusinessGroupID)
        {
            PageNumber = PageNumber + 1;
            SqlCommand command = new SqlCommand();
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "SP_GetAllRGMTypes";
            command.Parameters.Add("@SEARCH", SqlDbType.VarChar).Value = sSearch;
            command.Parameters.Add("@BusinessGroupID", SqlDbType.VarChar).Value = BusinessGroupID;
            command.Parameters.Add("@startRow", SqlDbType.VarChar).Value = PageNumber;
            command.Parameters.Add("@endRow", SqlDbType.VarChar).Value = Datalength;
            command.Parameters.Add("@sortName", SqlDbType.VarChar).Value = SortCol;
            command.Parameters.Add("@sortOrder", SqlDbType.VarChar).Value = SortDirection;

            DataSet dx = GetTable(command);

            List<RGMType> RGMTypes = new List<RGMType>();

            //switch (SortDirection)
            //{
            //    case "asc":
            //        switch (SortCol)
            //        {
            //            case "Description":
            //                dx.Tables[0].DefaultView.Sort = "Description ASC";
            //                break;
            //            case "LastModifiedDate":
            //                dx.Tables[0].DefaultView.Sort = "LastModifiedDate ASC";
            //                break;
            //            case "LastModifiedBy":
            //                dx.Tables[0].DefaultView.Sort = "LastModifiedBy ASC";
            //                break;
            //            case "CreateDate":
            //                dx.Tables[0].DefaultView.Sort = "CreateDate ASC";
            //                break;
            //            case "CreateBy":
            //                dx.Tables[0].DefaultView.Sort = "CreateBy ASC";
            //                break;
            //        }
            //        break;
            //    case "desc":
            //        switch (SortCol)
            //        {
            //            case "Description":
            //                dx.Tables[0].DefaultView.Sort = "Description DESC";
            //                break;
            //            case "LastModifiedDate":
            //                dx.Tables[0].DefaultView.Sort = "LastModifiedDate DESC";
            //                break;
            //            case "LastModifiedBy":
            //                dx.Tables[0].DefaultView.Sort = "LastModifiedBy DESC";
            //                break;
            //            case "CreateDate":
            //                dx.Tables[0].DefaultView.Sort = "CreateDate DESC";
            //                break;
            //            case "CreateBy":
            //                dx.Tables[0].DefaultView.Sort = "CreateBy DESC";
            //                break;
            //        }
            //        break;
            //}

            DataTable dt = dx.Tables[0];//.DefaultView.ToTable();

            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //if (i < dt.Rows.Count)
                    //{
                        RGMType p = new RGMType();
                        p.ID = Convert.ToInt16(dt.Rows[i]["ID"].ToString());
                        p.Description = dt.Rows[i]["Description"].ToString();
                        p.isNationWide = Convert.ToBoolean(dt.Rows[i]["isNationWide"].ToString());
                        p.isActive = Convert.ToBoolean(dt.Rows[i]["isActive"].ToString());
                        p.LastModifiedBy = dt.Rows[i]["LastModifiedBy"].ToString();
                        p.LastModifiedDate = dt.Rows[i]["LastModifiedDate"] == DBNull.Value ? (DateTime?)null : Convert.ToDateTime(dt.Rows[i]["LastModifiedDate"].ToString());
                        p.CreateBy = dt.Rows[i]["CreateBy"].ToString();
                        p.CreateDate = dt.Rows[i]["CreateDate"] == DBNull.Value ? (DateTime?)null : Convert.ToDateTime(dt.Rows[i]["CreateDate"].ToString());
                        RGMTypes.Add(p);
                    //}
                    //else
                    //{
                    //    break;
                    //}

                }
            }

            TotalData = dt.Rows.Count;

            return RGMTypes.ToList();
        }

        public RGMType GetRGMTypeByID(int ID)
        {
            SqlCommand command = new SqlCommand();
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "sp_GetRGMTypeByID";
            command.Parameters.Add("@ID", SqlDbType.Int).Value = ID;

            IList<string> Data = GetSingleRow(command);
            RGMType RGMTypes = null;

            if (Data != null && Data.Count > 0)
            {
                RGMTypes = new RGMType();
                RGMTypes.ID = Convert.ToInt16(Data[0]);
                RGMTypes.Description = Data[1].ToString();
                RGMTypes.isNationWide = Convert.ToBoolean(Data[2]);
                RGMTypes.isActive = Convert.ToBoolean(Data[3]);
                RGMTypes.LastModifiedDate = Data[4] == string.Empty ? (DateTime?)null : Convert.ToDateTime(Data[4].ToString());
                RGMTypes.LastModifiedBy = Data[5].ToString();
                RGMTypes.CreateDate = Data[6] == string.Empty ? (DateTime?)null : Convert.ToDateTime(Data[6].ToString());
                RGMTypes.CreateBy = Data[7].ToString();
            }

            return RGMTypes;
        }
    }
}